package com.ofsoft.weixin.mp.api;


/**
 * 带参数二维码生成
 * <p>
 * {"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info":
 * {"scene": {"scene_str": "test"}}}
 * </p>
 * 
 * @author OF
 * @date 2017年10月16日
 */
public class QrcodApi extends ApiBase {
	public static String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?"
			+ "access_token=";

	/**
	 * 生成带参数的二维码<br>
	 * 
	 * @param accessToken
	 *            访问 Token
	 * @param expire
	 *            过期时间单位：秒
	 * @param actionName
	 *            QR_STR_SCENE 临时/永久二维码
	 * @param sceneStr
	 *            自定义数据
	 * @return json
	 */
	public static ApiResponse creatQrcod(String accessToken, String expire,
			String actionName, String scenestr) {
		ApiRequest request = new ApiRequest();
		request.set("expire_seconds", expire);
		request.set("action_name", actionName);
		request.set(
				"action_info",
				new ApiRequest().set("scene",
						new ApiRequest().set("scene_str", scenestr)));
		request.setUrl(url);
		return sendPost(request);
	}

	/**
	 * 永久二维码
	 * 
	 * @param accessToken
	 *            访问 Token
	 * @param expire
	 *            过期时间单位：秒
	 * @param actionName
	 *            QR_STR_SCENE 临时/永久二维码
	 * @param sceneStr
	 *            自定义数据
	 * @return
	 */
	public static ApiResponse limitQrcod(String accessToken, String expire,
			String sceneStr) {
		return creatQrcod(accessToken, expire, "QR_LIMIT_STR_SCENE", sceneStr);

	}

	/**
	 * 临时二维码
	 * 
	 * @param accessToken
	 *            访问 Token
	 * @param expire
	 *            过期时间单位：秒
	 * @param actionName
	 *            QR_STR_SCENE 临时/永久二维码
	 * @param sceneStr
	 *            自定义数据
	 * @return
	 */
	public static ApiResponse strQrcod(String accessToken, String expire,
			String sceneStr) {
		return creatQrcod(accessToken, expire, "QR_STR_SCENE", sceneStr);

	}

	private static String showQrcodeUrl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";

	/**
	 * 通过ticket换取二维码地址
	 * 
	 * @param ticket
	 *            换取二维码参数
	 * @return String url
	 */
	public static String getShowQrcodeUrl(String ticket) {
		return showQrcodeUrl + ticket;
	}
}
